shiro 721

原理

Shiro721与shiro550不同,他的AES加密的key基本猜不到,系统随机生成。可使用登录后的RememberMe来爆破正确的key值,就是利用对加密消息填充错误的反馈,来逐步判断加密数据的内容,就是利用Shiro Cookie签名校验逻辑缺陷,然后构造RememberMe Cookie值来实现反序列化漏洞攻击

流量特征

1.
HTTP请求中含有”/shiro/”字符;
2.
HTTP请求中含有”JSESSIONID”参数;
3.
HTTP响应中含有”org.apache.shiro.subject.SimplePrincipalCollection”字符;
4.
HTTP响应中含有”rememberMe=deleteMe”字符。

攻击流程

漏洞复现

设置代理与抓包
使用 Burp Suite 开启抓包,并在 Firefox 中设置代理,确保流量可以被捕获。
生成攻击 Payload
登录时勾选 RememberMe,捕获生成的 cookie。
使用 ysoserial 工具生成反序列化攻击的 Payload。
修改 cookie 信息,插入恶意 Payload。
执行攻击
重新发送修改后的请求,如果环境配置正确且漏洞未修补,将执行 Payload 中的恶意代码。

3. 关键工具与技术

ysoserial:Java 序列化漏洞的利用工具,用于生成 Payload。
Docker:用于快速搭建和隔离环境。
Burp Suite:用于抓包和分析 HTTP 请求。

4. 漏洞原理

Shiro-721 漏洞存在于 Apache Shiro 的 RememberMe 功能中,该功能使用 AES-128-CBC 加密 cookies。攻击者可以利用 Padding Oracle 攻击来修改加密的 cookie,从而在服务器端触发反序列化,执行任意代码。